// 测试连接 MongoDB 数据库

const mongoose = require('mongoose');

const uri = 'mongodb://localhost:27017';

const options = {
    dbName: 'ecut',
    useNewUrlParser: true,
    useUnifiedTopology: true
}

// 期望获得数据库连接
const p = mongoose.connect(uri, options);
console.log(p);

// 注意，将来传入的参数是 Mongoose对象 的一个实例
let a = function(m) {
    console.log('连接成功', m === mongoose);

    // 创建一个规则 ( 类似于指定表中的表结构 )
    const studentSchema = new mongoose.Schema({
        name: { type: String, default: '' },
        gender: { type: String, default: '' },
        birthdate: { type: Date, default: null },
        hometown: { type: String, default: '' }
    }, {
        versionKey: false
    });

    // 根据规则创建一个 Model 【注意这里通过m或mongoose来调用model函数】
    const Student = m.model('Student', studentSchema);

    // 使用参数给定的实例对象来构造一个 Student 实例 (实际上是个文档(document))
    const stu = new Student({
        name: '康有为',
        gender: '男',
        birthdate: new Date('1850-10-20'),
        hometown: '中国'
    });

    // 使用 model 的 save 函数完成保存操作
    stu.save(function(error) {
        console.log('save: ', error);
        if (error) {
            console.log('保存失败', error);
        } else {
            console.log('保存成功');
        }
        // 通过 Mongoose实例 的 connection 属性来获得 连接
        // m.connection.close();
        m.disconnect(); // mongoose.disconnect();
    });

}

let b = function(ex) {
    console.log('连接失败', ex);
}

p.then(a).catch(b);